iT邦幫忙

2023 iThome 鐵人賽

DAY 29
1
AI & Data

用Python程式進行股票技術分析系列 第 29

Day29 建置型態識別之物件偵測模型

  • 分享至 

  • xImage
  •  

接續昨天Day28,今天會使用建立好的實驗資料集來建置物件偵測模型並進行訓練與驗證。

在Google Colab上建置物件偵測模型

在Day27時已參照這篇「TensorFlow 2 Object Detection API With Google Colab」文章並已在Google雲端硬碟上建立「工作區」,如下所示:

TensorFlow
├───models
├───scripts
│   └───preprocessing
│     └───generate_tfrecord.py 
└───workspace
    └───training_demo
        ├───annotations
        │   └───label_map.pbtxt 
        ├───exported-models
        ├───images
        │   ├───test
        │   │     └───測試圖片與對應標註之XML檔案
        │   └───train
        │         └───訓練圖片與對應標註之XML檔案
        ├───models
        │   └───my_ssd_resnet50_v1_fpn
        │     └───pipeline.config
        └───pre-trained-models
            └───ssd_resnet50_v1_fpn_640x640_coco17_tpu-8

接下來也是使用這個工作區來進行型態識別之物件偵測模型的建置,首先在workspace目錄下新增一個目錄「stock_pattern_recorginition」,內容於下:

workspace
    └───stock_pattern_recorginition
        ├───annotations
        │   └───label_map.pbtxt 
        ├───exported-models
        ├───images
        │   ├───test
        │   │     └───測試圖片與對應標註之XML檔案
        │   └───train
        │         └───訓練圖片與對應標註之XML檔案
        ├───models
        │   └───my_ssd_mobilenet_v2
        │     └───pipeline.config
        └───pre-trained-models
            └───ssd_mobilenet_v2_320x320_coco17_tpu-8

與Day27案例不同,這邊預訓練模型改用SSD MobileNet v2 320x320以加快訓練速度(主要是因為參賽時間有限,另外也不知道Day28的實驗資料集是否能夠讓模型被訓練起來)。然後將SSD MobileNet v2 320x320模型放在pre-trained-models目錄下並複製其中pipeline.config檔案到my_ssd_mobilenet_v2目錄,接著修改pipeline.config內容:

  • 第3行改為num_classes: 1
  • 第138行改為batch_size: 16
  • 第162行改為fine_tune_checkpoint: "pre-trained-models/ssd_mobilenet_v2_320x320_coco17_tpu-8/checkpoint/ckpt-0"
  • 第168行改為fine_tune_checkpoint_type: "detection"
  • 第172行改為label_map_path: "annotations/label_map.pbtxt"
  • 第174行改為input_path: "annotations/train.record"
  • 第182行改為label_map_path: "annotations/label_map.pbtxt"
  • 第186行改為input_path: "annotations/test.record"

接著將資料集放在images目錄下。並在annotations目錄中新增label_map.pbtxt,其內容如下:

item {
      id: 1
      name: 'bottom'
}

然後從"TensorFlow\models\research\object_detection"資料夾複製"model_main_tf2.py"檔案並將其貼至stock_pattern_recorginition檔案夾中,從"TensorFlow\models\research\object_detection"複製"exporter_main_v2.py"檔案並將其貼至stock_pattern_recorginition檔案夾中。
上述檔案都已到位後,複製一份「第二十七天:簡述物件偵測技術.ipynb」來做修改,主要是調整路徑設定。修改後的版本放在「第二十九天:建置型態識別之物件偵測模型.ipynb」。
在Google Colab中開啟「第二十九天:建置型態識別之物件偵測模型.ipynb」,然後一步一步地執行程式碼儲存格。其中需要注意的程式碼儲存格說明於下。

1.『#步驟4 : 掛載Google雲端硬碟』

執行這個儲存格後會跳出以下的對話框:
Imgur
請選擇「連線至Google雲端硬碟」,之後會跳出一些授權程序,就請按照相關說明點選並同意授權。

2.『#步驟19 - 測試模型』

在執行這個步驟之前,請先將兩個測試圖檔(分別命名為img1.jpg與img2.jpg)放入Google Colab的儲存空間(不是放在Google雲端硬碟上)。若沒有測試圖檔在步驟20時會發生錯誤。

3.『#步驟20 - 執行推論』

到這一步就可以知道模型是否真實地訓練成功。執行後出現物件偵測結果:
Imgur
從上圖可知已正確識別出底部型態。但這個模型因資料集的關係是過擬合(overfitting)的,因此無法應用於實際場合。


上一篇
Day28 建立技術型態資料集
下一篇
Day30 總結與補充
系列文
用Python程式進行股票技術分析30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言